package com.ysstech;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World！");


        // 1、命名规范（不能以下划线或美元符号开头，也不能以 '_'或'$'结尾。
        // 反 例 ：_name / name / $name / name_ / name$ / name

        // 2、【推荐】如果模块、接口、类、方法使用了设计模式，在命名时需体现出具体模式。
        // 说明：将设计模式体现在名字中，有利于阅读者快速理解架构设计理念。
        // 正例：public class OrderFactory;
        // public class LoginProxy;
        // public class ResourceObserver;

        // 3、【强制】在 long 或者 Long 赋值时，数值后使用大写的 L，不能是小写的 l，小写容易跟数字1 混淆，造成误解。

        // 4、 【强制】任何二目、三目运算符的左右两边都需要加一个空格。
        int x,y,z;
        x = 6;y = 2;
        z = x > y ? x - y : x + y;
        System.out.println(z);

        // 5、运算符的左右必须有一个空格
        int flag = 0;
        // 关键词 if 与括号之间必须有一个空格，括号内的 f 与左括号，0 与右括号不需要空格
        // 代码规范很重要
        if (flag == 0) { System.out.println("say");
        }
        // 左大括号前加空格且不换行；左大括号后换行
        if (flag == 1) { System.out.println("world");
            // 右大括号前换行，右大括号后有 else，不用换行
        } else {
            System.out.println("ok");
            // 在右大括号后直接结束，则必须换行
        }
        // 6、正例：下例中实参的 args1，后边必须要有一个空格。
        // method(args1, args2, args3);

        // 7、【强制】Object 的 equals 方法容易抛空指针异常，应使用常量或确定有值的对象来调用equals；
        // 正例："test".equals(object); 反例：object.equals("test");

        // 8、ArrayList的subList结果不可强转成ArrayList，否则会抛出ClassCastException
        // 异常，即 java.util.RandomAccessSubList cannot be cast to java.util.ArrayList。
        // 说明：subList 返回的是 ArrayList 的内部类 SubList，并不是 ArrayList 而是 ArrayList
        // 的一个视图，对于 SubList 子列表的所有操作最终会反映到原列表上。
        List<String> list = new ArrayList<String>(32);
        list.add("hello");
        list.add("world");

        List<String> stringList = list.subList(0, 1);
        for (String s : stringList) {
            System.out.println(s);
        }

        // 9、【强制】使用集合转数组的方法，必须使用集合的 toArray(T[] array)，传入的是类型完全
        // 一样的数组，大小就是 list.size()。使用带参数的构造方法
        List<String> lists = new ArrayList<String>(2);
        list.add("guan");
        list.add("bao");
        String[] array = new String[lists.size()];
        array = list.toArray(array);

        // 10、【强制】使用工具类 Arrays.asList()把数组转换成集合时，不能使用其修改集合相关的方
        //法，它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。
//        String[] str = new String[] { "you", "wu" };
//        List list1 = Arrays.asList(str);
//        list1.add("yangguanbao");
    }
}
